﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;

namespace AgendaManager.Service
{
    public class ObraDAO : DAOBase
    {
        internal static List<Obra> RetrieveEntities(object dto, string filtro)
        {
            List<Obra> dtos = new List<Obra>();

            DataTable dt = GetDataTable(dto, filtro);

            if (dt.Rows.Count > 0)
                dtos = LlenarObra(dto, dt);

            return dtos;
        }

        private static List<Obra> LlenarObra(object dto, DataTable dt)
        {
            List<Obra> dtos = new List<Obra>();

            foreach (DataRow dr in dt.Rows)
            {
                Obra aux = new Obra();
                PoblarObjetoDesdeDataRow(aux, dr);

                dtos.Add(aux);
            }

            return dtos;
        }

        internal static Obra NuevaObra(Obra obra)
        {
            try
            {
                int obraId = GetNextId(obra);

                if (obraId != 0)
                {
                    obra.Id = obraId;
                    if (CreateEntity(obra))
                    {
                        CarpetaDAO.CreateFoldersStructure(obra);
                        return obra;
                    }
                    throw new Exception("No se pudo crear la Obra");
                }
                else
                    throw new Exception("No se pudo obtener el siguiente id de la entidad: Obra");
            }
            catch (Exception)
            {

                throw;
            }
        }

        internal static object RetrieveEntitiesWhere(object dto, string where)
        {
            throw new NotImplementedException();
        }

        internal static bool Update(object dto)
        {
            try
            {
                return DAOBase.UpdateEntity(dto);
            }
            catch (Exception)
            {

                throw;
            }
        }

        internal static void CreateFolderStructures(InformeSemanal inf)
        {
            Carpeta carpeta = new Carpeta();
            carpeta.ObraId = inf.Id;
            carpeta.Tipo = "IvoNota";

            CreateEntity(carpeta);
            //DAOBase.CreateEntity(new Carpe
        }
    }
}